#include "stm32f4xx.h"                  // Device header

void delay_s(int n)
{
	for (int j = 0; j < n; j++);
	for (int i = 0; i < 1000000; i++);
}

int main()
{
	/* 第一步: 开启 GPIO 端口的时钟 */
	/* GPIO 挂载在 AHB1 总线 */
	RCC_AHB1ENR |= (0x01 << 5);       /*GPIOF 外设时钟使能*/
	
	/* 第二步: 控制 GPIO 输出方向 */
	/* PF6, 7, 8 配置通用输出模式 */
	GPIOF_MODER &= ~(0x3F << (2*6));   /* 12bit ~ 17bit 清 0*/
	GPIOF_MODER |= (0x15 << (2*6));    /* 12bit, 14bit, 16bit 1 */
	
	/* 第三步: 设置 IO 口为上拉 */
//	GPIOF_PUPDR &= ~(0x3F << (2*6));   /* 12bit ~ 17bit 清 0*/
//	GPIOF_PUPDR |= (0x15 << (2*6));    /* 12bit, 14bit, 16bit 1 */
	
	/* 第三步: 控制 GPIO 的数据输出寄存器*/
	while(1)
	{
		/* PF6 输出低电平, 其他两个高电平 */
		GPIOF_ODR |= (7 << 6);
		GPIOF_ODR &= ~(1 << 6); 
		delay_s(1);
		
		/* PF7 输出低电平, 其他两个高电平 */
		GPIOF_ODR |= (7 << 6);
		GPIOF_ODR &= ~(2 << 6); 
		delay_s(1);
		
		/* PF8 输出低电平, 其他两个高电平 */
		GPIOF_ODR |= (7 << 6);
		GPIOF_ODR &= ~(4 << 6); 
		delay_s(1);
	}
}

void SystemInit(void){}
